var mongoose = require('../dataHelp/mongo');
var schema = mongoose.Schema;
//定义模型
var postSchema = new schema({
    postId     : String,  //帖子id
    uuid       : String,  //发帖人id
    title      : String,  //发帖标题
    content    : String,  //发帖的内容  html格式
    descript   : String,  //发帖的内容简介  取前300个字
    userName   : String,  //发帖人姓名
    createTime : String,  //创建时间
    label      : Array,   //发帖标签
    textNum    : Number,  //发帖字数
    type       : String,  //发帖类型
    typeName   : String,  //发帖类型名称
    isUsing    : Number,  //是否禁用 0 禁用 1 启用
    updateTime : String,  //更新时间
    readNum    : Number,  // 阅读量
    like       : Array,  //点赞
});

//定义model
var postModel = mongoose.model('post',postSchema);
/**
 * 保存发布
 */
postModel.save= async (params)=>{
    var post = new postModel(params);
    return await post.save()
}
/**
 * 首页查询列表
 */
postModel.findList = async (params,page,pageSize)=>{
    //skip 跳过
    //limit 条数
    return await postModel.find(params,{postId: 1, descript: 1, userName: 1,createTime : 1,label : 1,title : 1,uuid : 1,typeName : 1,textNum : 1}).sort({'createTime':-1}).skip(page * pageSize).limit(pageSize);
}
/**
 * 根据id查询详情页
 * @param {*} params 
 */
postModel.findDetail = async (params)=>{
    return await postModel.find(params)
}
/**
 * 翻页，查询总条数
 * @param {*} params 
 */
postModel.findLength = async (params) => {
    return await postModel.find(params).count();
}
/**
 * 查询热门列表
 * 只查最近五条
 */
postModel.findHotList = async (params) => {
    return await postModel.find(params).sort({readNum : -1}).limit(5);
}
/**
 * 更新操作
 * @param {*} filter 
 * @param {*} update 
 */
postModel.updateData = async (filter,update) => {
    return await postModel.update(filter,update)
}
/**
 * 查询上一条
 * @param {*} params 
 */
postModel.findLast = async (params) => {
    return await postModel.find({ 'createTime': { '$lt': params.createTime },uuid : params.uuid },{title : -1,postId : 1}).sort({createTime : -1}).limit(1)
}
/**
 * 查询下一条
 * @param {*} params 
 */
postModel.findNext = async (params)=>{
    return await postModel.find({ 'createTime': { '$gt': params.createTime },uuid : params.uuid  },{title : 1,postId : 1}).sort({createTime : 1}).limit(1)
}
/**
 * 点赞
 * @param {*} params 
 */
postModel.findLike = async (params) => {
    return await postModel.find({"postId" : params},{like : -1});
}
module.exports = postModel;